package com.hyt.it.ogt.kq.common.gov.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author wuyingge
 * @version 1.0.0
 * @ClassName TomcatURLConfig.java
 * @Description <p>
 *  *     解决文件名中含有"[]"等特殊字符时，接口400的问题
 *  *     Tomcat的新版本中增加了一个新特性，就是严格按照 RFC 3986规范进行访问解析，而 RFC 3986规范定义了Url中只允许包含英文字母（a-zA-Z）、数字（0-9）、-_.~4个特殊字符
 *  *     以及所有保留字符(RFC3986中指定了以下字符为保留字符：! * ’ ( ) ; : @ & = + $ , / ? # [ ])。
 *  * <p>
 * @createTime 2022年07月28日 15:40:00
 */
@Configuration
@Slf4j
public class TomcatURLConfig {

    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        log.info("tomcat set [] init ........");
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers(connector -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}
